/**
  * @file geometry.h
  * @brief Fichier contenant les fonctions utiles aux opérations géométriques
  * @author Thibault Merle et Guillaume Poussel
  */
#ifndef GEOMETRY_H
#define GEOMETRY_H

#include "base/Point.h"
#include "base/Vector.h"

/**
  * Calcule le produit en croix entre deux vecteurs.
  *
  * Il s'agit du déterminant de la matrice constituée des coordonnées des
  * deux vecteurs.
  * @param v1 Premier vecteur
  * @param v2 Second vecteur
  * @return Valeur du produit en croix
  */
c_prod_type cross_product(const Vector* v1, const Vector* v2);

/**
  * Détermine si trois points sont alignés.
  *
  * Cette méthode utilise le produit en croix en vérifiant si les
  * vecteurs sont colinéaires.
  * @return \p true si les trois points sont alignés, \p false sinon.
  */
bool are_on_row(const Point* p1, const Point* p2, const Point* p3);

#endif // GEOMETRY_H
